User-Level Sandboxing: a Safe and Efficient Mechanism for Extensibility
نویسندگان
چکیده
Extensible systems allow services to be configured and deployed for the specific needs of individual applications. This paper describes a safe and efficient method for userlevel extensibility that requires only minimal changes to the kernel. A sandboxing technique is described that supports multiple logical protection domains within the same address space at user-level. This approach allows applications to register sandboxed code with the system, that may be executed in the context of any process. Our approach differs from other implementations that require special hardware support, such as segmentation or tagged translation lookaside buffers (TLBs), to either implement multiple protection domains in a single address space, or to support fast switching between address spaces. Likewise, we do not require the entire system to be written in a type -safe language, to provide fine-grained protection domains. Instead, our user-level sandboxing technique requires only pagedbased virtual memory support, and the requirement that extension code is written either in a type-safe language, or by a trusted source. Using a fast method of upcalls, we show how our sandboxing technique for implementing logical protection domains provides significant performance improvements over traditional methods of invoking user-level services. Experimental results show our approach to be an efficient method for extensibility, with inter-protection domain communication costs close to those of hardware-based solutions lever-
منابع مشابه
An Efficient User-Level Shared Memory Mechanism for Application-Specific Extensions
This paper focuses on an efficient user-level method for the deployment of application-specific extensions, using commodity operating systems and hardware. A sandboxing technique is described that supports multiple extensions within a shared virtual address space. Applications can register sandboxed code with the system, so that it may be executed in the context of any process. Such code may be...
متن کاملFlexible and Efficient Sandboxing Based on Fine-Grained Protection Domains
Sandboxing is one of the most promising technologies for safely executing potentially malicious applications, and it is becoming an indispensable functionality of modern computer systems. Nevertheless, traditional operating systems provide no special support for sandboxing; a sandbox system is either built in the user level, or directly encoded in the kernel level. In the user-level implementat...
متن کاملOn the Integration of Real-time Asynchronous Event Handling Mechanisms with Existing Operating System Services
This paper presents an asynchronous event handling mechanism for real-time applications that leverages existing system services in COTS systems. In our implementation, event dispatching is initiated within bottom-half interrupt handling routines, in order to support predictable, safe, and efficient event handling functionality at user-level. We compare our asynchronous I/O mechanism with existi...
متن کاملExtensible Operating Systems
To exploit the high performance afforded by the hardware, applications must be allowed to customize the operating system according to their needs. A pertinent question is: What interface should the operating system kernel provide to the user-level code? This interface should be efficient, extensible, and safe, but need not provide high-level abstractions. Abstractions and policies are better le...
متن کاملDynamicClass Loading in the Java VirtualMachine
Class loaders are a powerful mechanism for dynamically loading software components on the Java platform. They are unusual in supporting all of the following features: laziness, type-safe linkage, user-defined extensibility, andmultiple communicating namespaces. We present the notion of class loaders and demonstrate some of their interesting uses. In addition, we discuss how to maintain type saf...
متن کامل